﻿using Honest.MES.Contracts.Attributes;
using Honest.MES.Contracts.Events;
using System;
using System.Collections.Generic;
using System.Reflection;

namespace Honest.MES.Contracts.Interfaces
{
    public interface IModuleDiscoveryService
    {
        IEnumerable<Type> DiscoverModules();
        IEnumerable<Type> DiscoverModulesFromAssembly(Assembly assembly);
        IEnumerable<Type> DiscoverModulesFromDirectory(string directoryPath);
        ModelInfoAttribute DiscoverModuleInfo(Type moduleType);
        event EventHandler<ModulesDiscoveredEventArgs> ModulesDiscovered;
    }
}